#include "../head.h"    


/*
    创建线程 
    int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                        void *(*start_routine) (void *), void *arg);
    参数 线程标识符 线程的属性 线程函数 线程函数的参数
    
    阻塞等待线程结束
    int pthread_join(pthread_t thread, void **retval);
    参数 线程标识符 返回值指针

    退出线程
    void pthread_exit(void *retval);
    参数 线程退出值变量的地址 必须是全局变量
*/

int retval = 10;

void *thread_func(void *arg)
{
    sleep(3);
    for (int i = 0; i < 3; i++)
    {
        printf("子线程\n");
    }
    pthread_exit(&retval);
    printf("子线程结束\n");//这个代码不会执行

}
// 使用线程的时候，需要连接线程的库   即gcc 01-pthread_create.c -lpthread

int main()
{
    printf("主线程开始\n");

    pthread_t thread;
    int res = pthread_create(&thread, NULL, (void *)thread_func, NULL);
    if (res == 0)
    {
        printf("创建线程成功\n");
    }
    else
    {
        printf("创建线程失败\n");
    }
    
    //如果主线程结束 则所有的子线程都会结束
    pthread_join(thread, NULL);
    printf("主线程结束\n");
    return 0;
}

